package br.ufrj.dcc.ad.event;

import java.util.ArrayList;
import java.util.List;

import br.ufrj.dcc.ad.systems.Cliente;
import br.ufrj.dcc.ad.systems.Servidor;

public class ReenterEvent extends Event {

	public ReenterEvent(Cliente gerador, Servidor servidor, double tempoOcorrencia) {
		super(gerador, servidor, tempoOcorrencia);
	}

	@Override
	public List<Event> executaAcao() {
		//O servidor tem que está ocupado já que este evento somente ocorre se houver interrupções e
		//portanto não faz sentido tentarmos incluí-lo no servidor verificando se o mesmo encontra-se ocioso.
		servidor.getFilasDePrioridade().get(gerador.getTipoCliente()).interruptReenter(gerador);
		
		//Guarda o último tempo de chegada na fila.
		if(gerador.getTemposUltimasEntradasFilas().size() > gerador.getTipoCliente()){
			gerador.getTemposUltimasEntradasFilas().set(gerador.getTipoCliente(),tempoOcorrencia);
		}else{
			gerador.getTemposUltimasEntradasFilas().add(gerador.getTipoCliente(),tempoOcorrencia);
		}
		
		return new ArrayList<Event>();
	}

}
